"""
实例方法：方法中存在self参数

"""


class Date:
    def __init__(self, year, month, day):
        """
        :param year: 年
        :param month: 月
        :param day: 日
        """
        self.year = year
        self.month = month
        self.day = day

    def __str__(self):
        return f"{self.year}/{self.month}/{self.day:02}"

    # 静态方法
    @staticmethod
    def parse_date_str(date_str: str):
        return Date.parse_date_str_2(date_str)

    # 类方法，cls代表当前类本身，防止硬编码
    @classmethod
    def parse_date_str_2(cls, date_str: str):
        year, month, day = tuple(date_str.split("-"))
        return cls(int(year), int(month), int(day))


if __name__ == '__main__':
    d = Date(2023, 12, 7)
    print(d)

    # 当前这个类输出格式日期的时候，必须要传入三个参数
    # 现在项传入一个字符串，例如：2023-12-7，使用静态方法
    # 静态方法，类.方法
    d1 = Date.parse_date_str("2023-12-17")
    print(d1)

    # 类方法
    d2 = Date.parse_date_str_2("2023-12-9")
    print(d2)
